.TH std::ios_base::ios_base 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ios_base::ios_base \- std::ios_base::ios_base

.SH Synopsis
   private:                                      \fI(until C++11)\fP
   ios_base( const ios_base& );
   public:                               \fB(1)\fP     \fI(since C++11)\fP
   ios_base( const ios_base& ) = delete;
   protected:                                \fB(2)\fP
   ios_base();

   1) The copy constructor is
   private
   \fI(until C++11)\fP
   deleted
   \fI(since C++11)\fP: streams are not copyable.
   2) The default constructor is protected: only derived classes may construct
   std::ios_base. The internal state is undefined after the construction. The derived
   class must call std::basic_ios::init() to complete initialization before first use
   or before destructor; otherwise the behavior is undefined.

.SH Notes

   The same applies to the constructors of the next class in the I/O hierarchy,
   std::basic_ios. Further-derived classes (std::istream and std::ostream) are always
   constructed with a concrete stream buffer object and call std::basic_ios::init(),
   possibly more than once, to complete initialization of their virtual base.

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

      DR    Applied to          Behavior as published              Correct behavior
   LWG 50   C++98      the copy constructor was not specified   specified as private
                       the behavior of destroying a
   LWG 220  C++98      std::ios_base                            the behavior is
                       object before calling its init() was not undefined in this case
                       clear
   LWG 1249 C++98      initialization did not need to be        also needs to be
                       completed before first use               completed
